package com.ym.medical.service;

import com.github.pagehelper.PageInfo;
import com.ym.core.utils.tkmybatis.IBaseSV;
import com.ym.medical.domain.entity.HospitalEntity;
import com.ym.medical.domain.param.DataMainPicpParam;
import com.ym.medical.domain.param.HosSosQryParam;
import com.ym.medical.domain.param.HospitalParam;
import com.ym.medical.domain.param.HospitalQueryParam;
import com.ym.medical.domain.param.HospitalRankEditParam;
import com.ym.medical.domain.param.HospitalUpdateParam;
import com.ym.medical.domain.vo.HosSosVo;
import com.ym.medical.domain.vo.HospitalDetailVo;
import com.ym.medical.domain.vo.HospitalListPcVO;
import com.ym.medical.domain.vo.HospitalListVO;
import com.ym.medical.domain.vo.HospitalVo;
import com.ym.soso.domain.param.RegistryWayParam;

import java.util.List;
import java.util.Map;

/**
 * 【请填写功能名称】Service接口
 *
 * @author ym
 * @date 2020-08-19
 */
public interface IHospitalSV extends IBaseSV<HospitalEntity> {

	/**
	 * 查询【请填写功能名称】列表
	 *
	 * @param queryParam 【请填写功能名称】 查询对象
	 * @return 【请填写功能名称】集合
	 */
	List<HospitalListPcVO> selectListPC(HospitalQueryParam queryParam);


	/**
	 * 新增【请填写功能名称】
	 *
	 * @param updateParam 【请填写功能名称】 新增对象
	 * @return 结果
	 */
	Long insertPC(HospitalUpdateParam updateParam);

	/**
	 * 修改【请填写功能名称】
	 *
	 * @param updateParam 【请填写功能名称】 修改参数
	 * @return 结果
	 */
	int updateByIdPC(HospitalUpdateParam updateParam);

	/**
	 * 手机端医院
	 * @param queryParam
	 * @return
	 */
	List<HospitalListVO> selectHospitals(HospitalQueryParam queryParam);

	/**
	 * 医院详情
	 * @param id
	 * @param currId
	 * @return
	 */
    HospitalDetailVo resultMap(Long id, Long currId);

	/**
	 *急救医院列表
	 * @param sosQryParam
	 * @return
	 */
    List<HosSosVo> hosSos(HosSosQryParam sosQryParam);

	/**
	 * pc 医院添加
	 * @param hospital
	 * @param registryWay
	 * @param picIds
	 * @return
	 */
    long addH(HospitalEntity hospital, List<RegistryWayParam> registryWay, List<DataMainPicpParam> picIds);

	/**
	 * 医院修改
	 * @param hospital
	 * @param wayList
	 * @param pics
	 * @return
	 */
	long updateOrInsert(HospitalEntity hospital, List<RegistryWayParam> wayList,List<DataMainPicpParam> pics);

	/**
	 * soso pc 医院列表
	 *
	 * @param pageNo
	 * @param limit
	 * @param hospitalQryParam
	 * @return
	 */

	PageInfo<HospitalVo> hospitalList(int pageNo, int limit, HospitalQueryParam hospitalQryParam);


	/**
	 * pc 医院详情
	 * @param id
	 * @return
	 */
	HospitalDetailVo pcResultMap(Long id);

	/**
	 * 医院排名列表
	 * @param pageNo
	 * @param limit
	 * @param hospitalQryParam
	 * @return
	 */
	PageInfo<HospitalVo> hospitalRankList(int pageNo, int limit, HospitalQueryParam hospitalQryParam);

	/**
	 * 医院排名修改
	 * @param hospitalEditParam
	 * @return
	 */
	int updateByMyId(HospitalRankEditParam hospitalEditParam);

	/**
	 * 查询医院列表
	 * @param pageNo 页码
	 * @param limit 每页规格
	 * @param hospitalModel 实体对象
	 * @return
	 */
	PageInfo<HospitalEntity> getHospitalList(int pageNum, int pageSize, HospitalParam model);
	/**
	 * 导入医院信息
	 * @param hospitalList
	 * @return
	 */
    Map<String, Object> uploadIntoHospital(List<HospitalEntity> hospitalList);


	/**
	 * 所有医院信息
	 * @param pageNo
	 * @param limit
	 * @param model
	 * @return
	 */
	PageInfo<HospitalEntity> getAllhospitalList(int pageNo, int limit, HospitalParam hospitalModel);


	/**
	 * 添加医院
	 * @param hospital
	 * @return
	 */
	int addHospital(HospitalEntity hospital);
	/**
	 * 医院信息更改
	 * @param hospital
	 * @return
	 */
	int updateHospital(HospitalEntity hospital);
	/**医院code校验
	 *
	 * @param hosCode
	 */
	void repeatHosCode(String hosCode);
	/**
	 * 医院下拉搜索
	 * @param hosName
	 * @return
	 */
	List<HospitalEntity> dropdownSearch(String hosName);
	/**
	 * 所有医院名
	 * @return
	 */
    List<HospitalEntity> selectHosName();
}
